<?php
class Login extends Module {
	public function init() {
		if ($this->session->ouverte()) {
			if ($this->session->user instanceof Administrateur) {
				$this->tpl->assign('nom', $this->session->user->adresseMailAdministrateur);
				$this->tpl->assign('adm', $this->tpl->fetch('adm.tpl'));
			}
			else {
				$this->tpl->assign('nom', $this->session->user->prenoms[0] . ' ' . $this->session->user->nom);
				$this->tpl->assign('u', $this->tpl->fetch('u.tpl'));
			}
			
			$this->tpl->assign('isadmin', ($this->session->user instanceof Administrateur));
		}
	}
	
	public function action_login() {
		if ($this->req->identifiant == '' or $this->req->motdepasse == '') {
			$this->site->redirect('index');
		}
		
		if (preg_match('#^[A-Za-z0-9\.-_]+@[a-zA-Z0-9]+\.[A-Za-z]+$#', $this->req->identifiant)) {
			$utilisateur = null;
			
			// Connexion avec adresse mail
			try {
				$utilisateur = Etudiant::recupererAvecAdresseMail($this->req->identifiant);
			}
			catch (MyException $e) {
				var_dump($e);
			}
			
			if ($utilisateur == null) {
				try {
					$utilisateur = Administrateur::recupererAvecAdresseMail($this->req->identifiant);
				}
				catch (MyException $e) {
					var_dump($e);
				}
			}
			
			if ($utilisateur == null) {
				$this->site->ajouter_message("Désolé, ce couple identifiant/mot de passe n'existe pas dans notre base de données !", ALERTE);
				$this->site->redirect('index');
			}
			elseif (sha1(sha1($this->req->motdepasse).'graindesel') == $utilisateur->hashPassword) {
				$this->site->ajouter_message('Vous êtes maintenant connecté !', INFO);
				$this->session->user = $utilisateur;

				$this->site->redirect('index');
			}
			else {
				$this->site->ajouter_message("Désolé, ce couple identifiant/mot de passe n'existe pas dans notre base de données !", ALERTE);
				$this->site->redirect('index');
			}
		}
		elseif (preg_match('#^[0-9]+$#', $this->req->identifiant)) {
			// Connexion avec un numéro d'étudiant
			try {
				$utilisateur = Etudiant::recupererAvecNoEtudiant($this->req->identifiant);
			}
			catch (MyException $e) {
				$this->site->ajouter_message("Désolé, ce couple identifiant/mot de passe n'existe pas dans notre base de données !", ALERTE);
				$this->site->redirect('index');
			}
			
			if (sha1(sha1($this->req->motdepasse).'graindesel') == $utilisateur->hashPassword) {
				$this->site->ajouter_message('Vous êtes maintenant connecté !', INFO);
				$this->session->user = $utilisateur;

				$this->site->redirect('index');
			}
			else {
				$this->site->ajouter_message("Désolé, ce couple identifiant/mot de passe n'existe pas dans notre base de données !", ALERTE);
				$this->site->redirect('index');
			}
		}
		else {
			$this->sute->redirect('index');
		}
	}

	public function action_logout(){		
		$this->site->ajouter_message('Vous êtes maintenant déconnecté !');							
		$this->session->fermer(); 			
		$this->site->redirect("index");
	}

}
?>